#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>

//孤儿进程：父进程先死亡，子进程还在执行，最终子进程被1号进程领养
int main()
{
    pid_t id=fork();
    if(id<0)
    {
        printf("非法进程！\n");
        return 1;
    }
    else if(id==0)
    {
        while(1)
        {
            printf("我是子进程，我的pid:%d,ppid:%d\n",getpid(),getppid());
            sleep(1);
        }
    }
    else
    {
        int i=10;
        while(i--)
        {
            printf("我是父进程，我的pid:%d,ppid:%d\n",getpid(),getppid());
            sleep(1);
        }
        printf("I am dead!\n");
        exit(2);    //退出进程
    }

    return 0;
}

////僵尸进程：子进程先退出，父进程还未退出
//int main()
//{
//    pid_t id=fork();
//    if(id<0)
//    {
//        printf("非法进程！\n");
//        return 1;
//    }
//    else if(id==0)
//    {
//        int i=10;
//        while(i--)
//        {
//            printf("我是子进程，我的pid:%d,ppid:%d\n",getpid(),getppid());
//            sleep(1);
//        }
//        printf("I am dead!\n");
//        exit(2);    //退出进程
//    }
//    else
//    {
//        while(1)
//        {
//            printf("我是父进程，我的pid:%d,ppid:%d\n",getpid(),getppid());
//            sleep(1);
//        }
//    }
//
//    return 0;
//}
